python大数据开源项目 python做大数据 | 您所在的位置:网站首页 › python not in效率低 › python大数据开源项目 python做大数据 |
如果你有个5、6 G 大小的文件,想把文件内容读出来做一些处理然后存到另外的文件去,你会使用什么进行处理呢?不用在线等,给几个错误示范:有人用multiprocessing 处理,但是效率非常低。于是,有人用python处理大文件还是会存在效率上的问题。因为效率只是和预期的时间有关,不会报错,报错代表程序本身出现问题了~ Python处理大数据的劣势: 1、python线程有gil,通俗说就是多线程的时候只能在一个核上跑,浪费了多核服务器 2、python执行效率不高,在处理大数据的时候,效率不高 3、绝大部分的大公司,用java处理大数据不管是环境也好,积累也好,都会好很多 Python处理数据的优势(不是处理大数据): 1、异常快捷的开发速度,代码量巨少 2、丰富的数据处理包,不管正则也好,html解析啦,xml解析啦,用起来非常方便 3、内部类型使用成本巨低,不需要额外怎么操作(java,c++用个map都很费劲) 4、公司中,很大量的数据处理工作工作是不需要面对非常大的数据的 5、巨大的数据不是语言所能解决的,需要处理数据的框架(hadoop, mpi。。。。)虽然小众,但是python还是有处理大数据的框架的,或者一些框架也支持python 6、编码问题处理起来太太太方便了 结论: 1、python可以处理大数据 2、python处理大数据不一定是最优的选择 3. python和其他语言(公司主推的方式)并行使用是非常不错的选择 4. 因为开发速度,你如果经常处理数据,而且喜欢linux终端,而且经常处理不大的数据(100m一下),最好还是熟悉一下python 为什么用python处理大文件总有效率问题?
如果工作需要,立刻处理一个大文件,你需要注意两点: 一、大型文件的读取效率 面对100w行的大型数据,经过测试各种文件读取方式,得出结论: with open(filename,"rb") as f: for fLine in f: pass方式最快,100w行全遍历2.7秒。基本满足中大型文件处理效率需求。如果rb改为r,慢6倍。但是此方式处理文件,fLine为bytes类型。但是python自行断行,仍旧能很好的以行为单位处理读取内容。 二、文本处理效率问题 这里举例ascii定长文件,因为这个也并不是分隔符文件,所以打算采用列表操作实现数据分割。但是问题是处理20w条数据,时间急剧上升到12s。本以为是byte.decode增加了时间。遂去除decode全程bytes处理。但是发现效率还是很差。 最后用最简单方式测试,首次运行,最简单方式也要7.5秒100w次。 那么关于python处理大文件的技巧,从网络整理三点:列表、文件属性、字典三个点来看看。 1.列表处理 def fun(x):尽量选择集合、字典数据类型,千万不要选择列表,列表的查询速度会超级慢,同样的,在已经使用集合或字典的情况下,不要再转化成列表进行操作,比如: values_count = 0 # 不要用这种的 if values in dict.values(): values_count += 1 # 尽量用这种的 if keys,values in dict: values_count += 1 后者的速度会比前者快好多好多。 2、对于文件属性 如果遇到某个文件,其中有属性相同的,但又不能进行去重操作,没有办法使用集合或字典时,可以增加属性,比如将原数据重新映射出一列计数属性,让每一条属性具有唯一性,从而可以用字典或集合处理: return '(' + str(x) + ', 1)' list(map(fun,[1,2,3])) 使用map函数将多个相同属性增加不同项。 3、对于字典 多使用iteritems()少使用items(),iteritems()返回迭代器: >>> d = {'a':1,'b':2} >>> for i in d.items() : .... print i ('a',1) ('b',2) >>> for k,v in d.iteritems() : ... print k,v ('a',1) ('b',2) 字典的items函数返回的是键值对的元组的列表,而iteritems使用的是键值对的generator,items当使用时会调用整个列表 iteritems当使用时只会调用值。 除了以下5个python使用模块,你还有什么技巧解决大文件运行效率的问题吗? 1. 读写文件技术,今后会用到测试数据的参数化和测试报告写作功能中~ 2. 数据处理技术,今后测试脚本的测试数据处理过程可以用到~ 3. 数据统计分析技术,今后会在测试结果分析中用到 4. 图表展示技术,在今后的测试框架中相关测试报告会用到 5. 程序自动触发技术,可用于测试脚本程序的自动执行。 |
CopyRight 2018-2019 实验室设备网 版权所有 |